/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.facilscrum.sesion;

import java.awt.Color;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Date;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import org.facilscrum.beans.Proyectos;
import org.facilscrum.beans.Usuarios;
import org.facilscrum.form.mdi.MDIApplication;
import org.facilscrum.generales.Mensajeria;

/**
 *
 * @author avbravo
 */
public class MySesion implements ISesion {

    public static Usuarios usuarios = new Usuarios();
    static Proyectos proyectos;
    static Boolean seleccionoProyectoTrabajo = false;
    public static java.sql.Date fechausername;
    private static String numeroVersion = "0.1";
    private static String panelAction;

    public static Usuarios getUsuarios() {
        return usuarios;
    }

    public static void setUsuarios(Usuarios usuarios) {
        MySesion.usuarios = usuarios;
    }

    public static Proyectos getProyectos() {
        return proyectos;
    }

    public static void setProyectos(Proyectos proyectos) {
        MySesion.proyectos = proyectos;
    }

    public static Boolean getSeleccionoProyectoTrabajo() {
        return seleccionoProyectoTrabajo;
    }

    public static void setSeleccionoProyectoTrabajo(Boolean seleccionoProyectoTrabajo) {
        MySesion.seleccionoProyectoTrabajo = seleccionoProyectoTrabajo;
    }

    public static String getNumeroVersion() {
        return numeroVersion;
    }

    public static void setNumeroVersion(String numeroVersion) {
        MySesion.numeroVersion = numeroVersion;
    }

    public static String getPanelAction() {
        return panelAction;
    }

    public static void setPanelAction(String panelAction) {
        MySesion.panelAction = panelAction;
    }

    public static Date getFechausername() {
        java.util.Calendar ca = java.util.Calendar.getInstance();
        java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
        fechausername = mydate;
        return fechausername;
    }

    /*
     *  MySesion.formatearFechaToString(MySesion.getFechausername());
     */
    public static String formatearFechaToString(Date fecha) {
        try {
            Format formatter;
            formatter = new SimpleDateFormat("dd/MM/yyyy");
            String s = formatter.format(fecha);
            return s;
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "FormatearFechaToString()");
        }

        return "";
    }

    /*
     * Obtiene el año de una fecha sql
     */
    public static Integer getYearSQLDate(java.sql.Date mydate) {
        try {
            SimpleDateFormat formatNowYear = new SimpleDateFormat("yyyy");
            String year = formatNowYear.format(mydate.getTime());
            return Integer.parseInt(year);
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "MySesion.getYearSQLDate()");
        }
        return null;
    }
    /*
     * Obtiene el año de una fecha java.util.Date
     */

    public static Integer getYearDate(java.util.Date mydate) {
        try {
            SimpleDateFormat formatNowYear = new SimpleDateFormat("yyyy");
            String year = formatNowYear.format(mydate);

            return Integer.parseInt(year);

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "MySesion.getYearDate()");
        }
        return null;
    }

   public static Integer getMonthDate(java.util.Date mydate) {
        try {
            SimpleDateFormat formatNowYear = new SimpleDateFormat("MM");
            String month = formatNowYear.format(mydate);

            return Integer.parseInt(month);

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "MySesion.getMonthDate()");
        }
        return null;
    }
   
      public static Integer getDayDate(java.util.Date mydate) {
        try {
            SimpleDateFormat formatNowYear = new SimpleDateFormat("dd");
            String day = formatNowYear.format(mydate);

            return Integer.parseInt(day);

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "MySesion.getDayDate()");
        }
        return null;
    }

    public static Double redondeo(Double d) {

        String val = d + "";
        BigDecimal big = new BigDecimal(val);
        big = big.setScale(2, RoundingMode.HALF_UP);
        return big.doubleValue();
    }

    public static String getHoraSistema() {
        Calendar calendario = Calendar.getInstance();
        int hora, minutos, segundos;
        hora = calendario.get(Calendar.HOUR_OF_DAY);
        minutos = calendario.get(Calendar.MINUTE);
        segundos = calendario.get(Calendar.SECOND);
        return hora + ":" + minutos + ":" + segundos;
    }

    public static Integer diasDiferencia(java.sql.Date fechaTerminacion, java.sql.Date fechaInicio){
        try {
             final Integer MILLSECS_PER_DAY = 24 * 60 * 60 * 1000;
                Long diferencia = (fechaTerminacion.getTime() - fechaInicio.getTime()) / MILLSECS_PER_DAY;
               return diferencia.intValue();
                //jSlider1.setMaximum(diferencia.intValue());
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "MySession.diasDiferencia()");
        }
        return null;
        
    }
    public static Boolean esEntero(String texto) {
        try {
            Integer.parseInt(texto);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    private void imprimirTodos(List<Usuarios> aux, HashMap map) throws JRException {
        try {
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
//Indicamos la ruta del reporte
            InputStream reporte = (InputStream) getClass().getResourceAsStream("/org/facilscrum/reportes/usuariostodos.jasper");
            if (reporte == null) {
                Mensajeria.Mensaje("No se pudo cargar el reporte");
            } else {
                JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
                JasperViewer.viewReport(print, false);
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }
}
